TSYMB=tableSymbole/
CODE=code/
POINTOTS= $(TSYMB)entree.o $(TSYMB)chaineEntree.o $(TSYMB)chaineChaineEntree.o $(TSYMB)pileChaineEntree.o $(TSYMB)hashTable.o
POINTOCODE= $(CODE)lex.o $(CODE)yacc.o $(CODE)tableGencode.o $(CODE)tableValueText.o $(CODE)genMips.o
POINTO= $(POINTOCODE) $(POINTOTS)
POINTOLIST= genMips.o tableGencode.o tableValueText.o lex.o yacc.o entree.o chaineEntree.o chaineChaineEntree.o pileChaineEntree.o hashTable.o
OPTIONSCOMPIL= -W -Wall -Wshadow

all : calto cleanO
	@echo "\n\ncalculatrice qui prend en paramètre un fichier et écrit le résultat dans un fichier de sortie avec utilisation d'un fichier lex et d'un fichier yacc séparés."

calto : $(POINTOLIST)
	@gcc -o calto  $(POINTO) -lfl $(OPTIONSCOMPIL)
	
genMips.o : $(CODE)genMips.c
	@gcc -c -o $(CODE)genMips.o $(CODE)genMips.c $(OPTIONSCOMPIL)
	
tableValueText.o : $(CODE)tableValueText.c
	@gcc -c -o $(CODE)tableValueText.o $(CODE)tableValueText.c $(OPTIONSCOMPIL)
	
tableGencode.o : $(CODE)tableGencode.c
	@gcc -c -o $(CODE)tableGencode.o $(CODE)tableGencode.c $(OPTIONSCOMPIL)
	
hashTable.o : $(TSYMB)hashTable.c
	@gcc -c -o $(TSYMB)hashTable.o $(TSYMB)hashTable.c $(OPTIONSCOMPIL)

pileChaineEntree.o : $(TSYMB)pileChaineEntree.c
	@gcc -c -o $(TSYMB)pileChaineEntree.o $(TSYMB)pileChaineEntree.c $(OPTIONSCOMPIL)

chaineChaineEntree.o : $(TSYMB)chaineChaineEntree.c
	@gcc -c -o $(TSYMB)chaineChaineEntree.o $(TSYMB)chaineChaineEntree.c $(OPTIONSCOMPIL)

chaineEntree.o : $(TSYMB)chaineEntree.c
	@gcc -c -o $(TSYMB)chaineEntree.o $(TSYMB)chaineEntree.c $(OPTIONSCOMPIL)

entree.o : $(TSYMB)entree.c
	@gcc -c -o $(TSYMB)entree.o $(TSYMB)entree.c $(OPTIONSCOMPIL)

lex.o : lex $(CODE)lex.yy.c
	@gcc -c -o $(CODE)lex.o $(CODE)lex.yy.c

yacc.o : $(CODE)y.tab.c
	@gcc -c -o $(CODE)yacc.o $(CODE)y.tab.c
	
lex : yacc
	@lex --debug --verbose -o $(CODE)lex.yy.c $(CODE)calto.l
	
yacc :
	@yacc -d --verbose -o $(CODE)y.tab.c $(CODE)calto.y 

clean : cleanO cleanExe

cleanO :
	@rm $(CODE)lex.yy.c $(CODE)y.tab.c $(CODE)y.tab.h $(POINTO) 

cleanExe :
	@rm calto
